package com.zzl.bonds.ticket.untils;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

/**
 * 安心签项目编号 工具类
 *
 * @author : spp
 * @date : 2022/2/16 20:43
 */
@Component
public class ProjectCodeUtils {


    private ProjectCodeUtils() {
    }

    /**
     * 项目编号
     */
    private static final String PROJECT_CODE = "PC";

    private static final String DATE_FORMAT = "yyMMdd";
    private static final String TIME_FORMAT = "HHmmss";


    /**
     * EC+yymmdd+6位时分秒（24h制，秒数以第二步点击提交为节点）+4位流水号（16进制）
     * eg：EC220506153623001
     *
     * @param redisTemplate redis
     * @return 开立申请订单号
     */
    @SuppressWarnings({"rawtypes"})
    public static String getProjectCode(RedisTemplate redisTemplate) {
        return createProjectCode(redisTemplate, PROJECT_CODE);
    }

    /**
     * 6位流水号（16进制）
     *
     * @param redisTemplate redis；连接
     * @param key
     * @return
     */
    @SuppressWarnings({"rawtypes", "unchecked"})
    private static String createProjectCode(RedisTemplate redisTemplate, String key) {
        //日期
        Long increment = redisTemplate.opsForValue().increment(key, 1);
        if (increment == null) {
            increment = 0L;
        }
        return String.format("%06x", increment.intValue());
    }
}
